Object ক্লাস কি এবং কেন গুরুত্বপূর্ণ?

Java Technologies - Java.lang প্যাকেজ (Java.lang Package) - Object ক্লাস
262

java.lang প্যাকেজ Java এর একটি বিল্ট-ইন প্যাকেজ যা Java অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ ক্লাস এবং ইন্টারফেস সরবরাহ করে। এটি এমন কিছু গুরুত্বপূর্ণ ক্লাস ধারণ করে, যা অন্যান্য প্যাকেজ বা লাইব্রেরি থেকে সহজেই অ্যাক্সেস করা যায় এবং সেগুলি Java প্রোগ্রামগুলির জন্য অত্যাবশ্যক। এই প্যাকেজে থাকা অনেক ক্লাস এমনভাবে ডিজাইন করা হয়েছে, যাতে এগুলির ব্যবহারের জন্য কোনো নির্দিষ্ট ইনপোর্ট স্টেটমেন্টের প্রয়োজন পড়ে না।

এটির মধ্যে থাকা Object ক্লাস Java এর সবচেয়ে মৌলিক এবং গুরুত্বপূর্ণ ক্লাস। এটি Java ক্লাস হায়ারার্কি এর মূল ভিত্তি, কারণ সমস্ত ক্লাস সরাসরি বা পরোক্ষভাবে এই ক্লাস থেকে উত্তরাধিকার সূত্রে পায়।

Object ক্লাসের গুরুত্ব:

  1. Java ক্লাস হায়ারার্কির মূল ভিত্তি:
    • Object ক্লাস Java ক্লাস হায়ারার্কির মূল এবং এটি Java প্রোগ্রামের সব ক্লাসের সুপারক্লাস (superclass)। অর্থাৎ, Java-তে যে কোনো ক্লাসেরই এক বা একাধিক সুপারক্লাস থাকে, কিন্তু প্রত্যেক ক্লাসের একটি সর্বোচ্চ সুপারক্লাস Object ক্লাস, যা প্রত্যেক Java ক্লাসের অপ্রত্যক্ষ পূর্বসূরি (ancestor)।
    • উদাহরণস্বরূপ, আপনি যদি একটি নতুন ক্লাস তৈরি করেন, যেমন:

      class MyClass extends SomeOtherClass {
          // Your class code here
      }
      

      তাহলে MyClass এর সুপারক্লাস হবে SomeOtherClass এবং পরোক্ষভাবে এর সুপারক্লাস হবে Object

  2. Object ক্লাসের গুরুত্বপূর্ণ মেথড: Object ক্লাসে কিছু অত্যন্ত গুরুত্বপূর্ণ মেথড রয়েছে, যা সব ক্লাসে উপলব্ধ থাকে (কারণ তারা Object থেকে উত্তরাধিকারসূত্রে পাওয়া যায়)। কিছু গুরুত্বপূর্ণ মেথড হল:
    • toString() মেথড:
      • এই মেথডটি সব ক্লাসে ডিফল্টভাবে উপলব্ধ থাকে এবং এটি একটি স্ট্রিং রিপ্রেজেন্টেশন প্রদান করে। আপনি যদি নিজের ক্লাসে toString() মেথড ওভাররাইড করেন, তাহলে তা আপনার অবজেক্টের একটি মানব-পাঠযোগ্য রিপ্রেজেন্টেশন প্রদান করবে।
      • উদাহরণ:

        class MyClass {
            int id;
            String name;
            MyClass(int id, String name) {
                this.id = id;
                this.name = name;
            }
            
            @Override
            public String toString() {
                return "MyClass{id=" + id + ", name='" + name + "'}";
            }
        }
        
        public class Main {
            public static void main(String[] args) {
                MyClass obj = new MyClass(1, "John");
                System.out.println(obj);  // Output: MyClass{id=1, name='John'}
            }
        }
        
    • equals() মেথড:
      • equals() মেথডটি অবজেক্টগুলির সমতা পরীক্ষা করতে ব্যবহৃত হয়। ডিফল্টভাবে, Object ক্লাসের equals() মেথড কেবল অবজেক্টের রেফারেন্সের তুলনা করে, কিন্তু আপনি আপনার ক্লাসে এটি ওভাররাইড করে কন্টেন্ট সমতার তুলনা করতে পারেন।
      • উদাহরণ:

        class Person {
            String name;
            Person(String name) {
                this.name = name;
            }
            
            @Override
            public boolean equals(Object obj) {
                if (this == obj) return true;
                if (obj == null || getClass() != obj.getClass()) return false;
                Person person = (Person) obj;
                return name.equals(person.name);
            }
        }
        
        public class Main {
            public static void main(String[] args) {
                Person p1 = new Person("Alice");
                Person p2 = new Person("Alice");
                System.out.println(p1.equals(p2));  // Output: true
            }
        }
        
    • hashCode() মেথড:
      • hashCode() মেথড অবজেক্টের একটি হ্যাশ কোড প্রদান করে, যা সাধারণত equals() মেথডের সাথে সম্পর্কিত থাকে। যখন আপনি equals() মেথডকে ওভাররাইড করেন, তখন আপনি সাধারণত hashCode() মেথডও ওভাররাইড করেন, যাতে অবজেক্টগুলির মধ্যে সঠিক সমতা এবং হ্যাশিং কাজ করে।
      • উদাহরণ:

        @Override
        public int hashCode() {
            return name.hashCode();
        }
        
    • getClass() মেথড:
      • getClass() মেথডটি অবজেক্টের Class অবজেক্ট প্রদান করে, যা ক্লাসের রuntime টাইপ সম্পর্কে তথ্য দেয়। এটি আপনাকে ক্লাসের তথ্য (যেমন ক্লাসের নাম) জানাতে সাহায্য করে।
      • উদাহরণ:

        MyClass obj = new MyClass(1, "John");
        System.out.println(obj.getClass().getName());  // Output: MyClass
        
    • clone() মেথড:
      • clone() মেথড একটি শ্যালো কপি তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত Cloneable ইন্টারফেস ইমপ্লিমেন্ট করার জন্য ব্যবহৃত হয়, যাতে আপনি একটি অবজেক্টের কপি তৈরি করতে পারেন।
      • উদাহরণ:

        class MyClass implements Cloneable {
            int id;
            MyClass(int id) {
                this.id = id;
            }
        
            @Override
            public Object clone() throws CloneNotSupportedException {
                return super.clone();
            }
        }
        
  3. উত্তরাধিকার (Inheritance):
    • যেহেতু সব Java ক্লাসই Object ক্লাস থেকে উত্তরাধিকার পায়, Object ক্লাস সব ক্লাসের জন্য একটি সাধারণ বেস ক্লাস হিসাবে কাজ করে। এর মাধ্যমে, যেকোনো ক্লাস Object ক্লাসের মেথডগুলি হেরিট করে।
  4. জেনেরিক্সের সাথে ব্যবহার:
    • Object ক্লাস Java-এ জেনেরিক্সের ব্যবহারকে সাধারণত সমর্থন করে। Object ক্লাসের অবজেক্ট যেকোনো টাইপের ডেটা ধারণ করতে সক্ষম, তাই এটি একটি উপযুক্ত টাইপ বেস ক্লাস হিসাবে ব্যবহৃত হয়।

Object ক্লাসের প্রধান মেথডগুলি:

  • public boolean equals(Object obj)
  • public int hashCode()
  • public String toString()
  • protected Object clone() throws CloneNotSupportedException
  • public Class<?> getClass()
  • public final void notify()
  • public final void notifyAll()
  • public final void wait()
  • public final void wait(long timeout)

Object ক্লাস হল Java-এর সবচেয়ে মৌলিক ক্লাস, যা সব ক্লাসের জন্য একটি সুপারক্লাস। এটি Java ক্লাস হায়ারার্কির ভিত্তি, এবং এর মেথডগুলি (যেমন equals(), hashCode(), toString()) অনেক ক্ষেত্রে কোড রিইউজ এবং ডিবাগিংয়ে সাহায্য করে। Object ক্লাসের বৈশিষ্ট্যগুলি সকল Java ক্লাসে কার্যকরী হয়, তাই এটি Java প্রোগ্রামিং ভাষার একটি অপরিহার্য অংশ।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...